# 多态 polymorphism
# 多种形态 程序中的意义：当调用一个方法名的时候，得到的结果不同，在一般的面向对象语言中，多态是由继承来实现的
# python中，天生具有多态性
# 标准多态
class IPhone(object):
    def call(self):
        print('苹果手机可以打电话')


class AppleWatch(IPhone):
    def call(self):
        print('苹果手表可以打电话')


class AndroidPhone(object):
    def call(self):
        print('安卓手机可以打电话')


class Computer(object):
    def have_class(self):
        print('电脑可以用来上网课')


class Student(object):
    # 任何有call方法的对象都可以传递进来使用
    def need_call(self, phone):
        # 通过相同的方法名得到不同的结果即多态
        phone.call()


s = Student()
apple_watch = AppleWatch()
android_phone = AndroidPhone()
computer = Computer()

s.need_call(apple_watch)
s.need_call(android_phone)
# s.need_call(computer)
